package com.baichang.taoshunda.dao;

import com.baichang.framework.dao.BaseDao;
import com.baichang.framework.model.Page;
import com.baichang.taoshunda.entity.DeliveryClerk;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public interface DeliveryClerkDao extends BaseDao<DeliveryClerk> {
    /**
     * 查询配送人员
     *  @param name
     * @param lastTime
     * @param created
     * @param cityId
     * @param nowPage
     * @param pageSize @return
     */
    Page queryDispatcherList(String name, String lastTime, String created, Integer cityId, int nowPage, int pageSize);

    /**
     * 查询配送员订单
     *
     * @param id
     * @param nowPage
     * @param pageSize @return
     */
    Page<Map<String, Object>> dispatcherOrder(Integer id, int nowPage, int pageSize);

    /**
     * 查询配送员明细
     *
     * @param id
     * @param nowPage
     * @param pageSize @return
     */
    Page<Map<String, Object>> dispatcherOrderDetails(Integer id, int nowPage, int pageSize);

    /**
     * 修改配送员信息
     *
     * @param map
     * @param id
     * @return
     */
    int update(Map map, Integer id);

    /**
     * 配送员启用、禁用
     *
     * @param id
     * @param state
     * @return
     */
    int updateState(Integer id, Integer state);

    /**
     * 重置配送员密码
     *
     * @param id
     * @param md5
     * @return
     */
    int resetPassword(Integer id, String md5);

    /**
     * 根据手机号查询配送人员
     *
     * @param mobile 手机号
     * @return
     */
    DeliveryClerk getDeliveryByPhone(String mobile);

    /**
     * 忘记密码修改密码
     *
     * @param account 账号
     * @param newPwd  新密码
     * @return
     */
    int updateForgetPwd(String account, String newPwd);

    /**
     * 修改密码
     *
     * @param deliveryClerkId 配送员编号
     * @param pwd             密码
     * @return
     */
    int updatePwd(Integer deliveryClerkId, String pwd);

    /**
     * 根据配送员编号获取配送员信息
     *
     * @param deliveryClerkId 配送员编号
     * @return
     */
    Map<String, Object> getDeliveryInfoById(Integer deliveryClerkId);

    /**
     * 修改配送员信息
     * 实名认证的名字不能修改
     *
     * @param deliveryClerkId 配送员编号
     * @param headPic         头像
     * @return
     */
    boolean updateInfoById(Integer deliveryClerkId, String headPic,String name);


    /**
     * 变更手机号
     * 1.旧手机号获取验证码
     * 2.旧手机号验证验证码
     * 3.新手机号获取验证码
     * 4.新手机号验证验证码
     * 5.修改手机号
     *
     * @param deliveryClerkId 配送员编号
     * @param phone           新手机号
     * @return
     */
    boolean changePhone(Integer deliveryClerkId, String phone);

    /**
     * 实名认证
     *
     * @param deliveryClerkId 配送员编号
     * @param identityCardNum 身份证号
     * @param fontCard
     * @param reverseCrad
     * @param handheldPhotos
     * @param isCertification
     * @return
     */
    int realNameAuth(String name,Integer deliveryClerkId, String identityCardNum, String fontCard, String reverseCrad, String handheldPhotos, int isCertification);

    /**
     * 根据编号获取账号
     *
     * @param deliveryIds
     * @return
     */
    List<Map<String, Object>> getDeliveryClerkAccountsByIds(List<Integer> deliveryIds);

    /**
     *查询认证
     *
     * @param startCreate
     * @param endCreate
     * @param
     * @param cityId
     * @param nowPage
     * @param pageSize   @return
     * */
    Page queryAuthentication(String startCreate, String endCreate, String startTime, String endTime,  String name, Integer cityId, int nowPage, int pageSize);

    /**
     * 查询未认证
     *
     * @param name
     * @param
     *@param
     * @param cityId
     * @param nowPage
     * @param pageSize   @return
     */
    Page queryNoAuthentication(String name, String startCreate, String endCreate, String startTime, String endTime, Integer cityId, int nowPage, int pageSize);

    /**
     * 修改最后登录时间
     *
     * @param id 配送员编号
     * @return
     */
    int updateLastLoginDate(int id);

    /**
     * 修改是否接单状态
     *
     * @param deliveryId 配送员编号
     * @param isOpen     是否接单
     *                   1：接单
     *                   2：停止接单
     * @return
     */
    int updateIsOpen(Integer deliveryId, Integer isOpen);

    /**
     *
     * @param disId
     * @param add
     * @return
     */
    boolean updateDeliverBlance(int disId, BigDecimal add);

    /**
     * 配送员通过认证
     * @param id
     * @param isCertificate
     * @return
     */
    int throughDispatcher(Integer id, Integer isCertificate);

    /**
     * 修改配送员余额
     * @param deliveryId
     * @param deliveryMoney
     * @return
     */
    int updateBalance(Integer deliveryId, Double deliveryMoney);

    /**
     *
     * @return
     */
    Map<String,Object> deliveryCount();
        /**
         *
         * 功能描述: 
         *
         * @param deliveryId
         * @param nowPage
         *@param pageSize @return:
         * @auther: wsl
         * @date: 2019/2/28 9:18
         */
    List<Map<String,Object>> getKetubbahList(Integer deliveryId, Integer nowPage, Integer pageSize);
    /**
     *
     * 功能描述
     *
     * @param:
     * @return:
     * @auther: wsl
     * @date: 2019/3/2 10:58
     */
    List<Map<String,Object>> findGuide();
}